package com.ims.common.utils.uuid;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * ID生成器工具类
 *
 * @author IMS
 */
public class IdUtils
{
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID()
    {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID()
    {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID()
    {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID()
    {
        return UUID.fastUUID().toString(true);
    }

    /**
     * 获得业务编码（不含前缀）
     */
    public static String getServiceNo(String prefix) {
        SimpleDateFormat format = new SimpleDateFormat("YYMMddHHmmss");
        String format2 = format.format(new Date());
        int hashCodeV = java.util.UUID.randomUUID().toString().hashCode();
        if(hashCodeV < 0) {
            //有可能是负数
            hashCodeV = - hashCodeV;
        }
        return prefix + format2+String.format("%012d", hashCodeV).substring(0, 1);
    }
}
